package com.stark.service;

import java.util.List;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;

import com.stark.core.domain.User;
import com.stark.core.query.UserCondition;

/**
 * 用户接口。
 * @author Ben
 */
public interface UserService {
	
	/**
	 * 保存用户。
	 * @param user 用户对象。
	 * @return 已保存的用户。
	 */
	User save(User user);
	
	/**
	 * 删除用户。
	 * @param id 主键。
	 */
	void delete(Long id);
	
	/**
	 * 获取用户。
	 * @param id 主键。
	 * @return 存在时返回对象，否则返回 {@literal null} 。
	 */
	User get(Long id);
	
	/**
	 * 统计用户数量。
	 * @param condition 查询条件。
	 * @return 用户数量。
	 */
	long count(UserCondition condition);
	
	/**
	 * 查询用户列表。
	 * @param condition 查询条件。
	 * @param sort 排序规则。
	 * @return 用户列表。
	 */
	List<User> getList(UserCondition condition, Sort sort);
	
	/**
	 * 查询用户分页数据。
	 * @param condition 查询条件。
	 * @param pageable 分页信息。
	 * @return 用户分页数据。
	 */
	Page<User> getPage(UserCondition condition, Pageable pageable);

}
